A database is a collection of logically related data arranged in a predetermined format, such as in tables that contain rows and columns. To access the content of a table in the database, queries according to a standard database query language (such as the Structured Query Language or SQL) are submitted to the database. A query can be issued to insert new entries into a table of a database (such as to insert a row into the table), modify the content of the table, or to delete entries from the table. Examples of SQL statements include INSERT, SELECT, UPDATE, and DELETE.
Certain tables contain temporal data, where rows (or tuples) of the table contain timestamp information to indicate a time associated with each row. In one example, a new row can be inserted into a temporal table whenever some information associated with a particular record changes. Each new row inserted into the table is associated with a timestamp to indicate the time of change, for example.
One type of query that can be performed with respect to tables in a database is an aggregate query, which performs aggregation (e.g., sum, average, etc.) of attribute values in the table. However, if the table is a temporal table containing rows associated with timestamps, then performing a simple aggregation on attribute values may not produce accurate results. Conventionally, when performing aggregation on a temporal table, relatively complex nested queries are submitted to perform aggregation properly. Such nested queries are complex and prone to error.